package edu.seminario

import grails.converters.JSON

import org.codehaus.groovy.grails.web.json.JSONArray;
import org.codehaus.groovy.grails.web.json.JSONObject

class BuscarPorVotoController {

	BusquedaPorVotoService busquedaPorVotoService

	def index = { }

	/**
	 * Viene de esta forma
	 * {user_admin_id: 0, criterios: {calificacion: 0, fecha:1/1/2011, comentario:'s', estado:0,
	 * 	cantidad_resultados: 0} }
	 *
	 * Criterios:
	 * Falta poner los criterios
	 *
	 *
	 * Devlvemos de esta forma
	 *
	 * {success: true / false, data: 
	 * 	{	cantidad_muestras: N, resultados_obtenidos: M, total: P,
	 * 		list: [voto1, voto2, .....,votoN]
	 * 	} 
	 * }
	 *
	 */
	def buscar = {

//		String json = "{user_admin_id: 1, criterios: {calificacion: 1, fecha: '8/3/2012', comentario:'s', estado:2, cantidad_resultados: 100} }"
//		JSONObject jsonObject = JSON.parse(json)

		JSONObject jsonObject = JSON.parse(params.json)

		def userAdminId = jsonObject.user_admin_id
		JSONObject criteriosJsonObject = jsonObject.criterios

		def calificacion = criteriosJsonObject.calificacion
		def fecha = new Date(criteriosJsonObject.fecha)
		def estado = criteriosJsonObject.estado
		def comentario = "s".equalsIgnoreCase(criteriosJsonObject.comentario) ? true : false
		def cantidadResultados = criteriosJsonObject.cantidad_resultados

		def criterios = ["calificacion": new Criterio(nombre: "calificacion", valor: calificacion), 
			"fecha":new Criterio(nombre: "fecha", valor: fecha),
			"estado":new Criterio(nombre: "estado", valor: estado),
			"comentario":new Criterio(nombre: "comentario", valor: comentario),
			"cantidadResultados":new Criterio(nombre: "cantidadResultados", valor: cantidadResultados)]

		List answer = busquedaPorVotoService.buscar(userAdminId, criterios)

		JSONObject answerJson = new JSONObject()
		try {
			def numerosVotos =  Voto.list().size()
			answerJson.put('success', true)
			answerJson.put('cantidad_encontrada', answer.size())
			answerJson.put('total',  numerosVotos)
	
			JSONArray votosJson = new JSONArray()
			answer.each {
				votosJson.add(it.transformToJson())
			}
			
			answerJson.put('list', votosJson)
		} catch(RuntimeException e) {
			answerJson = new JSONObject()
			answerJson.put('success', false)
			answerJson.put('problem', e.getMessage())
		}

		jsonOutput(answerJson)
	}

	def jsonOutput(Object json) {
		response.setHeader('Content-disposition', 'filename="json"')
		response.contentType = "text/json"
		render json as JSON
	}
}
